FPGA编程语言 |
您所在的位置:网站首页 › assign always initial的区别 › FPGA编程语言 |
关注、星标公众号,精彩内容每日送达
来源:网络素材
Verilog语法的基本概念 一、Verilog HDL Verilog HDL是一种用于数字系统设计的语言。用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型也称为模块。Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,无论描述电路功能行为的模块或描述元器件或较大部件互连的模块都可以用Verilog语言来建立电路模型。如果按照一定的规矩编写,功能行为模块可以通过工具自动地转换为门级互连模块。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种: 1.1 系统级(system): 用语言提供的高级结构实现设计模块外部性能的模型。 1.2 算法级(algorithm): 用语言提供的高级结构实现算法运行的模型。 1.3 RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理和控制这些数据流动的模型。 1.4 门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。 1.5 开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。 二、Verilog HDL模块 一个复杂电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块有交互联系的现存电路或激励信号源。利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。 Verilog HDL行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和RTL级的模型设计。这种行为描述语言具有以下功能: (1) 可描述顺序执行或并行执行的程序结构。 (2) 用延迟表达式或事件表达式来明确地控制过程的启动时间。 (3) 通过命名的事件来触发其它过程里的激活行为或停止行为。 (4) 提供了条件、if-else、case、循环程序结构。 (5) 提供了可带参数且非零延续时间的任务(task)程序结构。 (6) 提供了可定义新的操作符的函数结构(function)。 (7) 提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。 Verilog HDL作为一种高级的硬件描述编程语言,与C语言的风格有许多类似之处。其中有许多语句如:if语句、case语句等和C语言中的对应语句十分相似。如果读者已经掌握C语言编程的基础,那么学习Verilog HDL并不困难。我们只要对Verilog HDL某些语句的特殊方面着重理解,并加强上机练习就能很好地掌握它,就能利用它的强大功能来设计复杂的数字逻辑电路系统。 2.1 简单的Verilog HDL模块 2.1.1 Verilog 语法简介 下面先介绍一个个简单的Verilog HDL程序,从中了解Verilog模块的特性。 module test_project_top( //模块名 input clk, // 时钟输入 input resetn, // 复位 input[7:0] a, //信号输入,信号a 位宽为8 bit input[7:0] b, //信号输入,信号b 位宽为8 bit input en, // 信号是能输入 信号en 位宽为1 bit output reg [8:0] c, // 寄存器类型定义,信号输出 c为9bit output reg [15:0] d // 寄存器类型定义,信号输出 d 为16bit ); /*........*/ //.........表示注释部分,注释只是为了方便程序员理解程序,对编译是不起作用的。 /*一个 .v文件中主要由 一个或多个 module ... endmodule块组成 每个module块内包括:模块名,输入端口,输出端口,以及多个时序电路,组合电路等组成 */ // 简单的时序电路组成 always@(posedge clk or negedge resetn) begin if(~resetn) // 或者 if(!resetn) 取 resetn 反 begin d |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |